package com.ruoyi.commodity.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 产品管理对象 tb_product
 * 
 * @author ruoyi
 * @date 2023-09-09
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Product extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商品id */
    private Long id;

    /** 店铺id */
    private Long authId;

    /** 产品类型id （关联tb_product_cates表id） */
    private Long catesId;

    /** 品牌 */
    private Long brandId;

    /** 品牌名称 */
    private String brandName;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String name;

    /** 商品编号 （从100001开始递增的编码） */
    @Excel(name = "商品编号 ", readConverterExp = "从=100001开始递增的编码")
    private String proNo;

    /** 商品规格型号 */
    private String model;

    /** OEM */
    private Long oem;

    /** 排序 */
    private Long sort;

    /** 产品SKU */
    @Excel(name = "产品SKU")
    private String sku;

    /** 产品介绍 */
    @Excel(name = "产品介绍")
    private String desc;

    /** 产品备注 */
    @Excel(name = "产品备注")
    private String productRemarks;

    /** 产品链接 */
    @Excel(name = "产品链接")
    private String productUrl;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 商品图片 */
    @Excel(name = "商品图片")
    private List<String> imgName;

    /** 发布时间 */
    private Date addTime;

    /** 单品尺寸 */
    @Excel(name = "单品尺寸")
    private String size;

    /** 产品重量 */
    @Excel(name = "产品重量")
    private BigDecimal productWeight;

    /** 颜色 */
    @Excel(name = "颜色")
    private String colorId;

    /** 商品价格 */
    @Excel(name = "商品价格")
    private BigDecimal price;

    /** 交货周期 */
    @Excel(name = "交货周期")
    private String leadTime;

    /** 质检模板id */
    @Excel(name = "质检模板id")
    private Long templateId;

    /** 质检方式 */
    @Excel(name = "质检方式")
    private Long inspectionMethod;

    /** 包装清单 */
    @Excel(name = "包装清单")
    private String packingList;

    /** 属性 */
    @Excel(name = "属性")
    private String attribute;

    /** 产品类型 */
    @Excel(name = "产品类型")
    private Integer flag;

    /** 销售计划明细中采购计划已选数量  */
    @Excel(name = "采购计划已选数量 ")
    private Integer procuredSelectedCount;

    /** 结束数量  */
    @Excel(name = "结束数量 ")
    private Integer terminatedQuantity;

    private Long productId;

    private String shipmentsId;

    private BigDecimal packageWeight;

    private BigDecimal cost;

    private String gtin;

    private Long operSize; // 销售计划明细未发数量

    private Long planSize; // 销售计划明细计划数量

    private String containerSize;

    private String packageSize;

    private Long boxSize;

    private String packMaterial;

    private String productMaterial;

    private Long vendorId;

    private String deleteStatus;

    private BigDecimal turnoverBoxWeight;

    private Long salesPlanId;

    private BigDecimal amount;

    private Long[] shipmentsIds;

    private Long[] shipmentsProductIds;

    /** 店铺对应的所有品牌id */
    private List<Long> authBrandIds;
    /**
     * 起始页数
     */
    private int pageNum;

    /**
     * 每页数
     */
    private int pageSize;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("catesId", getCatesId())
            .append("brandId", getBrandId())
            .append("name", getName())
            .append("proNo", getProNo())
            .append("model", getModel())
            .append("oem", getOem())
            .append("sort", getSort())
            .append("sku", getSku())
            .append("desc", getDesc())
            .append("remark", getRemark())
            .append("status", getStatus())
            .append("imgName", getImgName())
            .append("addTime", getAddTime())
            .append("updateTime", getUpdateTime())
            .append("size",getSize())
            .append("productWeight",getProductWeight())
            .append("colorId",getColorId())
            .append("price",getPrice())
            .append("leadTime",getLeadTime())
            .append("productId",getProductId())
                .append("packageWeight",getPackageWeight())
                .append("cost",getCost())
                .append("operSize",getOperSize())
                .append("containerSize",getContainerSize())
                .append("packageSize",getPackageSize())
                .append("boxSize",getBoxSize())
                .append("packMaterial",getPackMaterial())
                .append("productMaterial",getProductMaterial())
                .append("vendorId",getVendorId())
                .append("deleteStatus",getDeleteStatus())
                .append("productRemarks",getProductRemarks())
            .toString();
    }
}
